//#define _CRT_SECURE_NO_WARNINGS  1
////一定要动手，例子不管多么简单，建议至少自己手敲一遍看看是否理解了里头的细枝末节。
////一定要学会思考，思考为什么要这样，而不是那样。还要举一反三地思考
//#include<string>
//#include<iostream>
//using namespace std;
//class person {
//public:
//	 int _age;
//	 mutable int _id;//特殊变量即使在常函数或常对象中也可以修改  关键字：mutable
//	string _name;
//public:
//	//this指针的本质是指针常量，person* const p;指向的地址不可以修改
//		void func() const//const 修饰的是常函数，就是 const person * c、、了、、看、onst p;this指针指向的值也不可以被修改了
//		{               
//			//_age = 100;  //成员函数后面加const本质是修饰this指针，让指针指向的值不可以被修改
//			_id = 100;
//		}
//		void func2()
//		{
//
//		}
//        person()
//		{
//			cout << "person 默认构造函数" << endl;
//		}
//		person(int _age)
//		{
//			//this指向被调用的成员函数所属的对象
//			this->_age = _age;
//			cout << "person 有参构造函数" << endl;
//		}
//		person(const person& p)
//		{
//			_age = p._age;
//			_name = p._name;
//			cout << "person 拷贝构造函数" << endl;
//		}
//		~person()
//		{
//			//当使用堆上空间，释放是在此处释放
//			cout << "person  析构函数调用" << endl;
//		}
//		/*person& personAddage(person& p)
//		{
//			this->_age += p._age;
//			return *this;
//		}*/
//};
////常函数
////void test1()
////{
////	person p1;
////	p1.func();
////}
//
////常对象
//void test2()
//{
//	 const person p2;//常对象   常对象属性不可以被修改
//	 //常对象只能调用常函数    原因：非常函数可以修改对象中的属性
//	 p2.func();
//	/* p2.func2();*/
//}
//int main()
//{
//	test2();
//	system("pause");
//	return 0;
//}